package de.koller.worlders.engine.entity.plattform;

import de.koller.oceanFramework.math.Vec;
import de.koller.worlders.engine.entity.mo.MovingObject;
import de.koller.worlders.engine.tiles.ITile;
import de.koller.worlders.engine.tiles.data.ITileCreator;
import de.koller.worlders.render.VisualMap;
import de.koller.worlders.render.visual.DisplayRenderObject;

public class SpringPlattform extends PlattformEffect {
	public static final int GEN_ID = 2;
	
	public static final ITileCreator GEN_INSTANCE = new ITileCreator() {
		@Override public ITile newInstance() {
			return new Plattform().addEffect( new SpringPlattform() );
		}
		
		@Override public DisplayRenderObject getIcon() { return VisualMap.spring; }
		@Override public String getName() { return "Feder"; }
	};
	
	protected SpringPlattform() {}
	
	@Override
	public void init( Plattform p ) {
		super.init( p );
		
//		p.setTextureRep( new TextureRep( "data/tiles.png", 32*6, 0, 32, 32 ) );
		p.getTile().setVisual( VisualMap.spring );
		
		p.setPriority( 1 );
	}

	@Override
	public void collision( Vec wayBefore, Vec wayAfter, MovingObject mo ) {
		super.collision( wayBefore, wayAfter, mo );
		
		if( !mo.plattformHandler.isSpringUsed() ) {
			if( plattform.isAbove( mo ) || plattform.isBelow( mo ) ) {
				mo.plattformHandler.setSpringUsed( true );
				mo.getEnergy().setY( -mo.getEnergy().getY() );
				wayAfter.setY( 0 );
			}
			if( plattform.isLeft( mo ) || plattform.isRight( mo ) ) {
				wayAfter.setX( 0 );
				
			}
		}
	}

	
	
}
